Next generation video coding methods aim to achieve maximum efficiency by compressing data as much as possible. If data can be significantly compressed then high quality video can be streamed and delivered over bandwidth limited networks. The H.264/AVC coding standard is one example of a video coding standard. The H.264 standard combines block motion compensation with transform coding. Transform coding removes spatial redundancy within a frame, whereas block motion compensation removes redundancy between frames.
Video coding is performed in four parts: prediction, transformation, quantization and entropy coding. At the encoding side, prediction can consist of intra prediction, which refers to pixels in the same frame, and inter prediction, which refers to pixels in a preceding frame. Transformation changes prediction residues into coefficients in order to compact the energy of residues toward low frequency bands. Quantization divides transform coefficients of a frame by a value with rounding to a representation of a smaller number of bit-depth in order to further reduce the number of bits a frame can be represented by. The final stage, entropy coding, involves lossless representation of quantized transform coefficients and other parameters. The decoding side performs the inverse of these operations to generate reconstructed pixels. Both decoding and encoding processes include a closed loop wherein encoded/decoded macroblocks of a frame are reconstructed and then input back to a prediction unit for generating coding information of a next frame. Utilizing the reconstructed frame rather than the original frame for predicting the following frames prevents drift between frames.
The H.264 standard utilizes both intra prediction and inter prediction, and performs block based coding. Dividing a frame into macroblocks and separately coding each macroblock can give rise to artifacts created at block edges; i.e. there are visible divisions between blocks as the coding modes or motion vectors of neighboring blocks are usually different. To cancel out these artifacts, most block-based coding techniques include a deblocking filter in the closed coding loop. This deblocking filter can alleviate the artifacts at block edges, but cannot remove quantization errors within blocks. When coding is performed utilizing large quantization values at high fidelity, the deblocking filter alone is not sufficient.
A Wiener filter works by removing noise components from a coded signal in order to bring the noisy coded signal closer to the original signal. When a signal s is input to a typical system, it will be disturbed to some degree resulting in a signal s′ that differs from the original signal s. This is the result of additive noise. The purpose of the Wiener filter is to minimize the mean square error between these two signals so that the resultant filtered signal s^ is closer to the original signal s than to the disturbed signal s′. The Wiener filter operates by generating cross correlation matrices utilizing filter coefficients and auto-correlation matrices.
European Patent No. EP 1 841 230 A1 teaches a Wiener filter implemented both at the encoder and at the decoder side. The Wiener filter is therefore able to first generate the cross-correlation matrix, encoder parameters associated with the matrix, and embed these parameters in the bitstream and send them to the decoder for decoding, where they can be utilized to reduce quantization errors in a decoded frame, ensuring higher fidelity.